﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


using IP.Core.IPCommon;
using IP.Core.IPData;
using IP.Core.IPUserService;

using BKIUS;
using BKIDS;
using BKIDS.CDBNames;
using System.Data;


public partial class QuanLyNhanSu_F203_QuanLyGiangVien : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        m_lbl_mess.Visible = true;

        if (!IsPostBack)
        {
            load_data_2_cbo_ho_ten_doi_tuong();
            load_data_2_grid();
        }
    }

    #region Members
    US_DM_GIANG_VIEN m_us_dm_giang_vien = new US_DM_GIANG_VIEN();
    DS_DM_GIANG_VIEN m_ds_dm_giang_vien = new DS_DM_GIANG_VIEN();
    #endregion

    #region Public Interface

    public string Mapping_hoten(string ip_str_id_doituong)
    {
        try
        {
            decimal v_i_id_doituong = CIPConvert.ToDecimal(ip_str_id_doituong);
            US_DM_DOI_TUONG m_us_dm_doituong = new US_DM_DOI_TUONG(v_i_id_doituong);
            return CIPConvert.ToStr(m_us_dm_doituong.strHO_VA_TEN_DEM + " " + m_us_dm_doituong.strTEN);
        }
        catch (Exception v_e)
        {
            throw v_e;
        }
    }

    public string Mapping_chuc_vu(string ip_str_id_chuc_vu)
    {
        try
        {
            decimal v_i_id_doituong = CIPConvert.ToDecimal(ip_str_id_chuc_vu);
            US_CM_DM_TU_DIEN m_us_dm_doituong = new US_CM_DM_TU_DIEN(v_i_id_doituong);
            return CIPConvert.ToStr(m_us_dm_doituong.strTEN_NGAN);
        }
        catch (Exception v_e)
        {
            throw v_e;
        }
    }
    #endregion

    #region Data Structure

    #endregion

    #region Private Method
    /// <summary>
    /// Khi Form bắt đầu load sẽ gọi phương thức này
    /// </summary>
    private void set_inital_form_load()
    {
        load_data_2_grid();
    }
    private void reset_control()
    {
        m_txt_ten_dang_nhap.Text = "";
        m_txt_mat_khau.Text = "";
        m_txt_email_bkindex.Text = "";
    }
    private void load_data_2_grid()
    {
        try
        {
            // Đổ dữ liệu từ US vào DS
            m_us_dm_giang_vien.FillDataset(m_ds_dm_giang_vien);
            // Treo dữ liệu lên lưới
            m_grv_dm_giang_vien.DataSource = m_ds_dm_giang_vien.DM_GIANG_VIEN;
            m_grv_dm_giang_vien.DataBind();
        }
        catch (Exception v_e)
        {
            //nhớ using Ip.Common
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    /// <summary>
    /// Lấy dữ liệu trên form vào CSDL
    /// </summary>
    private void form_2_us_object()
    {
        System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US");
        m_us_dm_giang_vien.dcID = CIPConvert.ToDecimal(m_cbo_ho_va_ten_doi_tuong.SelectedValue);
        m_us_dm_giang_vien.strTEN_DANG_NHAP = m_txt_ten_dang_nhap.Text.Trim();
        m_us_dm_giang_vien.strMAT_KHAU = m_txt_mat_khau.Text.Trim();
        m_us_dm_giang_vien.strEMAIL_BKINDEX = m_txt_email_bkindex.Text.Trim();
        DateTime v_dat_out_result_ngay_bat_dau;
        // Kiểm tra đúng định dạng datetime
        if (DateTime.TryParseExact(CIPConvert.ToStr(m_dat_ngay_bat_dau_hop_tac.SelectedDate), "dd/MM/yyyy", enUS, System.Globalization.DateTimeStyles.None, out v_dat_out_result_ngay_bat_dau))
        {
            if (m_dat_ngay_bat_dau_hop_tac.SelectedDate != CIPConvert.ToDatetime("01/01/0001"))
                m_us_dm_giang_vien.datNGAY_DAU_CONG_TAC = m_dat_ngay_bat_dau_hop_tac.SelectedDate;
            else m_us_dm_giang_vien.SetNGAY_DAU_CONG_TACNull();
        }
        m_us_dm_giang_vien.strNOI_CONG_TAC = m_txt_noi_cong_tac.Text.Trim();
        m_us_dm_giang_vien.strHOC_VI = m_txt_hoc_vi.Text.Trim();
    }

    /// <summary>
    /// B1 Lấy dữ liệu trong CSDL đổ vào us đấy
    /// </summary>
    /// <param name="ip_int_stt_row"></param>
    private void load_data_2_us_update(int ip_int_stt_row)
    {
        // Lấy ID dựa vào thứ tự dòng
        decimal v_dc_id_dm_doi_tuong = CIPConvert.ToDecimal(m_grv_dm_giang_vien.DataKeys[ip_int_stt_row].Value);
        // Lấy dữ liệu từ CSDL dựa vào ID vừa có
        m_us_dm_giang_vien = new US_DM_GIANG_VIEN(v_dc_id_dm_doi_tuong);
        m_txt_ten_dang_nhap.ToolTip = CIPConvert.ToStr(m_us_dm_giang_vien.dcID);
    }

    /// <summary>
    /// B2 Đổ US lên form
    /// </summary>
    /// <param name="ip_US_DM_GIANG_VIEN"></param>
    private void us_object_2_form(US_DM_GIANG_VIEN ip_US_DM_GIANG_VIEN)
    {
        m_cbo_ho_va_ten_doi_tuong.SelectedValue = CIPConvert.ToStr(m_us_dm_giang_vien.dcID);
        m_txt_ten_dang_nhap.Text = m_us_dm_giang_vien.strTEN_DANG_NHAP;
        m_txt_mat_khau.Text = m_us_dm_giang_vien.strMAT_KHAU;        
        m_txt_email_bkindex.Text = m_us_dm_giang_vien.strEMAIL_BKINDEX;
        if (!ip_US_DM_GIANG_VIEN.IsNGAY_DAU_CONG_TACNull() || ip_US_DM_GIANG_VIEN.datNGAY_DAU_CONG_TAC != CIPConvert.ToDatetime("01/01/1900", "dd/MM/yyyy"))
            m_dat_ngay_bat_dau_hop_tac.SelectedDate = ip_US_DM_GIANG_VIEN.datNGAY_DAU_CONG_TAC;
        if (!ip_US_DM_GIANG_VIEN.IsNGAY_DAU_CONG_TACNull() || ip_US_DM_GIANG_VIEN.datNGAY_DAU_CONG_TAC != CIPConvert.ToDatetime("01/01/1900", "dd/MM/yyyy"))
            m_dat_ngay_bat_dau_hop_tac.SelectedDate = ip_US_DM_GIANG_VIEN.datNGAY_DAU_CONG_TAC;
        m_txt_noi_cong_tac.Text = m_us_dm_giang_vien.strNOI_CONG_TAC;
        m_txt_hoc_vi.Text = m_us_dm_giang_vien.strHOC_VI;
    }
    
    private void load_data_2_cbo_ho_ten_doi_tuong()
    {
        US_DM_DOI_TUONG v_us_dm_doi_tuong = new US_DM_DOI_TUONG();
        DS_DM_DOI_TUONG v_ds_dm_doi_tuong = new DS_DM_DOI_TUONG();
        v_us_dm_doi_tuong.FillDataset(v_ds_dm_doi_tuong);

        for (int v_i = 0; v_i < v_ds_dm_doi_tuong.DM_DOI_TUONG.Rows.Count; v_i++)
        {
            m_cbo_ho_va_ten_doi_tuong.Items.Add(new ListItem(CIPConvert.ToStr(v_ds_dm_doi_tuong.DM_DOI_TUONG.Rows[v_i][DM_DOI_TUONG.HO_VA_TEN_DEM]).Trim() + " " + CIPConvert.ToStr(v_ds_dm_doi_tuong.DM_DOI_TUONG.Rows[v_i][DM_DOI_TUONG.TEN]).Trim(), CIPConvert.ToStr(v_ds_dm_doi_tuong.DM_DOI_TUONG.Rows[v_i][DM_DOI_TUONG.ID])));
        }
    }
    #endregion

    #region Events
    protected void m_cmd_tao_moi_Click(object sender, EventArgs e)
    {
        try
        {
            // Đưa dữ liệu từ US lên form
            form_2_us_object();
            // Thêm dữ liệu vào CSDL
            m_us_dm_giang_vien.Insert();
            // Load dữ liệu lên grid 
            load_data_2_grid();
            m_lbl_mess.Text = "";
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_grv_dm_giang_vien_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        try
        {
            //B1: lấy được dữ liệu của dòng vừa chọn và đổ lên form
            load_data_2_us_update(e.RowIndex); // dữ liệu đang được chứa ở m_us_dm_thanh_vien
            // B2: Đổ dữ liệu từ US lên form
            us_object_2_form(m_us_dm_giang_vien);
            m_lbl_mess.Visible = false;
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_cmd_cap_nhat_Click(object sender, EventArgs e)
    {
        try
        {
            if (m_txt_ten_dang_nhap.ToolTip.Trim().Equals(""))
            {
                m_lbl_mess.Visible = true;
                m_lbl_mess.Text = "Bạn chưa chọn một dòng để cập nhật";
                //   m_lbl_thong_bao.Text = "Bạn chưa chọn một dòng để cập nhật";
                return;
            }
            form_2_us_object();
            // Lấy dữ liệu cho ID
            //m_us_dm_thanh_vien.dcID = CIPConvert.ToDecimal(hdf_id.Value);
            m_us_dm_giang_vien.dcID = CIPConvert.ToDecimal(m_txt_ten_dang_nhap.ToolTip);
            m_us_dm_giang_vien.Update();
            load_data_2_grid();
            reset_control();
            //hdf_id.Value = "";
            m_txt_ten_dang_nhap.ToolTip = "";
            m_lbl_mess.Text = "Cập nhật dữ liệu thành công";
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_cmd_delete_Click(object sender, EventArgs e)
    {
        try
        {
            reset_control();
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void m_grv_dm_giang_vien_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            //  Lấy Id dựa vào số thứ tự dòng
            decimal v_dc_id_dm_thanh_vien_tt = CIPConvert.ToDecimal(m_grv_dm_giang_vien.DataKeys[e.RowIndex].Value);
            // Xóa dữ liệu dựa vào Id
            m_us_dm_giang_vien.DeleteByID(v_dc_id_dm_thanh_vien_tt);
            load_data_2_grid();
            m_lbl_mess.Text = "Xóa dữ liệu thành công";
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    protected void btn_loc_doi_tuong_Click(object sender, EventArgs e)
    {
        try
        {

        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }

    protected void m_cbo_ho_va_ten_doi_tuong_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            US_DM_DOI_TUONG v_us_dm_doi_tuong = new US_DM_DOI_TUONG(CIPConvert.ToDecimal(m_cbo_ho_va_ten_doi_tuong.SelectedValue));
            //m_txt_ma_doi_tuong.Text = v_us_dm_doi_tuong.strMA_DOI_TUONG;
        }
        catch (Exception v_e)
        {
            CSystemLog_301.ExceptionHandle(this, v_e);
        }
    }
    #endregion
}